﻿using Microsoft.Extensions.DependencyInjection;
using StarsAdmin.Core.App;

namespace StarsAdmin.Web.Core.Extensions
{
    /// <summary>
    /// 跨域服务
    /// </summary>
    public static class CorsExtension
    {
        /// <summary>
        /// 添加跨域服务
        /// </summary>
        /// <param name="services"></param>
        /// <param name="configuration"></param>
        /// <returns></returns>
        public static void AddCorsConfig(this IServiceCollection services)
        {
            services.AddCors(options =>
           {
               options.AddPolicy(name: AppConfigs.Cors.AllowCors,
                   builder =>
                   {
                       if (AppConfigs.Cors.SpecificOrigins.Any(c => c != "*"))
                       {
                           // 允许指定的域名访问
                           builder.WithOrigins(AppConfigs.Cors.SpecificOrigins)
                                   .AllowAnyMethod() // 允许任何请求方式
                                   .AllowAnyHeader() // 允许任何头部
                                   .AllowCredentials(); // 允许任何证书 
                       } else
                       {
                           // 允许所有来源的域名访问
                           builder.SetIsOriginAllowed(host => true)
                                   //.AllowAnyOrigin() // CORS协议不允许同时指定通配符（任何）来源和凭据
                                   .AllowAnyMethod() // 允许任何请求方式
                                   .AllowAnyHeader() // 允许任何头部
                                   .AllowCredentials(); // 允许任何证书 
                       }
                   });
           });
        }
    }
}